package cn.myblog.ainblog.service;

import cn.myblog.ainblog.mapper.ArticleCategoryMapper;
import cn.myblog.ainblog.mapper.CategoryMapper;
import cn.myblog.ainblog.model.CategoryModel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;

/**
 * @author Dovaior
 * @Description 有关分类的业务层
 * @create 2021-04-04 20:51
 **/
@Service
public class CategoryService {
    @Autowired
    private CategoryMapper mapper;
    @Autowired
    private ArticleCategoryMapper articleCategoryMapper;

    /**
     * 查询全部的分类
     */
    public List<CategoryModel> selectAll(){
        return mapper.selectList(null);
    }
    /**
     * 添加分类
     * @param categoryModel 封装信息的实体
     */
    public int addCategory(CategoryModel categoryModel){
        return mapper.insert(categoryModel);
    }

    /**
     * 根据Id查询
     * @param categoryId 指定的分类id
     */
    public CategoryModel selectById(String categoryId){
        return mapper.selectById(categoryId);
    }

    /**
     * 更新分类信息
     * @param categoryModel 更新了信息的实体
     */
    public int updateById(CategoryModel categoryModel){
        return mapper.updateById(categoryModel);
    }

    /**
     * 根据ID删除
     * @param categoryId 指定的分类id
     */
    public int deleteById(String categoryId){
        return mapper.deleteById(categoryId);
    }

    /**
     * 分页
     * @param page 封装的page实体
     */
    public IPage<CategoryModel> selectPage(IPage<CategoryModel> page){
        return mapper.selectPage(page,null);
    }

    /**
     * 根据某一条件查询，用于数据监测
     */
    public CategoryModel selectByName(QueryWrapper<CategoryModel> queryWrapper){
        return mapper.selectOne(queryWrapper);
    }

    /**
     * 验证该分类是否含有博文
     * @param categoryId 根据分类ID查询
     * @return 返回标志
     */
    public boolean queryArticleIdByCategoryId(String categoryId){
        //默认为true
        boolean flag = true;
        List<String> articleList = articleCategoryMapper.queryArticleIdByCategoryId(categoryId);
        if (articleList.size() != 0){
            //当查询出的结果集的元素个数不为0时，说明查询出了元素，返回true
            flag = true;
        }else{
            //反之（说明没有查询结果），返回false
            flag = false;
        }
        return flag;
    }

    /**
     * 查询全部的分类id和分类名，用于前端页面的导航显示
     */
    public List<CategoryModel> queryAllCategory(){
        return mapper.queryAllCategory();
    }

}
